//
// Created by martin on 8/19/21.
//

#ifndef FTPSERVER2_0_NTHREAD_H
#define FTPSERVER2_0_NTHREAD_H

#include <pthread.h>
#include "task.h"
#include "taskqueue.h"
#include "queue.h"

typedef struct nthread{
    int id; /* 线程池给线程分配的id */
    pthread_t tid; /* pthread线程库给线程分配的id */
    struct event_base *base;

    Queue *taskq;     /* 待处理任务队列 */
    int notify_send_fd; /*  */

    pthread_mutex_t mutex; /* 互斥量 */
}nThread;

nThread *nthread_new();
void nthread_free(nThread *thread);
void nthread_init(nThread *thread, int id);
int nthread_addTask(nThread *thread, Task *task);
int nthread_activate(nThread *thread);

#endif //FTPSERVER2_0_NTHREAD_H
